package gestion.camping.dao.impl;

import gestion.camping.dao.GenericDAO;
import gestion.camping.dto.TypeTerrain;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 * Permet la lecture, la modification, l'ajout ou la suppresion en base des enregistrement de la table Type location
 * 
 * @author Gombert Damien
 * @author Foucras Melanie
 * @author Germa Romain
 * 
 * @version 1.0
 */
public class TypeTerrainDao extends GenericDAO<TypeTerrain>{

	public TypeTerrainDao(Connection conn) {
		super(conn);
	}

	
	@Override
	public TypeTerrain create(TypeTerrain obj) {		
		return obj;
	}

	@Override
	public boolean delete(TypeTerrain obj) {
		return false;
	}

	@Override
	public TypeTerrain update(TypeTerrain obj) {
		return obj;
	}

	@Override
	public TypeTerrain find(int id) {
		TypeTerrain dto = new TypeTerrain();
		
		try {
			
			Statement smt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
			
			String rqt = "SELECT * FROM TYPE_TERRAIN T WHERE T.TYPE_TERRAIN_NUM="+ id;
			
			//Execution de la requ�te
			ResultSet res = smt.executeQuery(rqt);		
			
			// si il y a des r�sultat, on se positionne sur le premier enregistrement
			if(res.first()){
				// Et on initialise le dto
				dto.setId(id);
				dto.setLibelle(res.getString("TYPE_TERRAIN_LIBELLE"));
			}
			
			//On ferme la transaction
			smt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return dto;
	}


	public List<TypeTerrain> findAllTypeTerrain() {
		List<TypeTerrain> listTypeTerrain = new ArrayList<TypeTerrain>();
		
		try {
			
			Statement smt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
			
			String rqt = "SELECT * FROM TYPE_TERRAIN T";
			
			//Execution de la requ�te
			ResultSet res = smt.executeQuery(rqt);		
			
			//On crée un dtoPersonne temporaire
			TypeTerrain dto;
			
			// Tant qu'il y a des résultat
			while(res.next()){
				//on initialise le dto
				dto = new TypeTerrain();
				dto.setId(res.getLong("TYPE_TERRAIN_NUM"));
				dto.setLibelle(res.getString("TYPE_TERRAIN_LIBELLE"));	
				
				//Et on ajoute le dto à la liste
				listTypeTerrain.add(dto);
			}
			
			//On ferme la transaction
			smt.close();
						
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return listTypeTerrain;
	}
}
